﻿using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;

namespace Wen.Core.Converters
{
	public class NullToVisibilityConverter : IValueConverter
	{
		private static NullToVisibilityConverter _instance;
		public static NullToVisibilityConverter Instance {
			get {
				if (_instance == null)
					_instance = new NullToVisibilityConverter();
				return _instance;
			}
		}

		private NullToVisibilityConverter() {
		}

		/// <summary>
		/// Converts a value. 
		/// </summary>
		/// <returns>
		/// A converted value. If the method returns null, the valid null value is used.
		/// </returns>
		/// <param name="value">The value produced by the binding source.
		///                 </param><param name="targetType">The type of the binding target property.
		///                 </param><param name="parameter">The converter parameter to use.
		///                 </param><param name="culture">The culture to use in the converter.
		///                 </param>
		public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
			return value == null ? Visibility.Collapsed : Visibility.Visible;
		}

		/// <summary>
		/// Converts a value. 
		/// </summary>
		/// <returns>
		/// A converted value. If the method returns null, the valid null value is used.
		/// </returns>
		/// <param name="value">The value that is produced by the binding target.
		///                 </param><param name="targetType">The type to convert to.
		///                 </param><param name="parameter">The converter parameter to use.
		///                 </param><param name="culture">The culture to use in the converter.
		///                 </param>
		public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
			throw new NotImplementedException();
		}
	}
}
